package api

import (
	"github.com/gogf/gf/net/ghttp"
	"ubf/util"
)

type (
	//接口统一返回结构体
	Res struct {
		// 操作码 1:成功 其它失败
		Code int `json:"code"`
		// 信息主体
		Data interface{} `json:"data"`
		// 提示语
		Msg string `json:"msg"`
	}
)

//失败返回 默认值1
//接受自定义错误码
//创建错误记录
func (res Res) Fail(r *ghttp.Request) {
	if res.Code == 0 {
		res.Code = 1
	}
	if res.Data == nil {
		res.Data = ""
	}
	if res.Msg == "" {
		res.Msg = "fail"
	}
	//请求日志
	info := map[string]interface{}{
		"ip":     r.GetClientIp(),
		"router": r.Request.RequestURI,
		"res":    res,
	}
	if json, _ := r.GetJson(); json != nil {
		info["json"] = json.Value()
	}
	f.Log{Name: "fail", Info: info}.Diy()
	r.Response.WriteJson(res)
	r.ExitAll()
}
func (res Res) Success(r *ghttp.Request) {
	if res.Data == nil {
		res.Data = ""
	}
	if res.Msg == "" {
		res.Msg = "success"
	}
	//根据配置文件记录请求参数
	if f.GCB("log.jsonParams") {
		//请求日志
		info := map[string]interface{}{
			"ip":     r.GetClientIp(),
			"router": r.Request.RequestURI,
		}
		if json, err := r.GetJson(); err == nil && json.Value() != nil {
			info["json"] = json.Value()
		}
		f.Log{Name: "request", Info: info}.Diy()
	}
	r.Response.WriteJson(res)
	r.ExitAll()
}
